import {findSiderRouter,IRoutes} from "@/routes";
import { matchPath } from "react-router-dom";
type TrouteTilte = {
    title:string,// 一级标题
    subTitle?:string// 二级标题
}
// 根据ID去数组中查找元素，深层次的查找。
export const findInfoById=(arr:any[],id:number):any=>{
    let info = null;
    for(let i=0;i<arr.length;i++){
        if(arr[i].id === id){// 判断数组中是否有满足条件的元素
            info = arr[i];// 找到数据
            return info;
        }else if(arr[i].children && arr[i].children.length>0){
            info = findInfoById(arr[i].children,id);
        }
        if(info) break;
    }
    return info;
    
}
// 可以对路由地址进行解析，返回一个对象，对象中拥有一级与二级的标题
// /hospital/show/622574cc36a9ba1be763dad8
export const getRouteTilte = (pathname:string):TrouteTilte=>{
    // /cmn/dict  ["","cmn","dict"]
    // 得到一级标题当中的path部分
    const itemPath:string = "/"+pathname.split("/")[1];//   /hospital
    // 根据itemPath去findSiderRouter生成的数组中去查找一级路由信息
    const item:IRoutes = findSiderRouter().find((v:IRoutes)=>v.path === itemPath) as IRoutes;
    const title:string = item.title as string;//  一级标题  医院管理
    let subTitle:string | undefined;// 二级标题
    // 判断是否有二级标题
    if(item.children){
        //  /hospital/show/622574cc36a9ba1be763dad8

        // matchPath可以验证pathname是否符合path的规则 ，如果不符合返回null,如果符合返回的是一个对象
        // 第一个参数是path,第二个参数是具体的路由地址pathname
        // console.log(matchPath("","/hospital/show/622574cc36a9ba1be763dad8"));// null
        // console.log(matchPath("",pathname));// null
        // console.log(matchPath("abc",pathname));// null
        // console.log(matchPath("/hospital/show/:id",pathname));// {}

        const subItem:IRoutes = item.children.find((v:IRoutes)=>matchPath(v.path as string,pathname)) as IRoutes;
        subTitle = subItem.title;
    }
    // 返回结果 。
    return {
        title,
        subTitle
    }

}
export default {
    getRouteTilte
}